Использование программы Gummer
Программа Gummer предназначена для склеивания картинок в единое паттерн-изображение (или CSS-спрайт), назвать можно как угодно...
(про экспорт кадров из gif-картинок ниже =)

Зачем это нужно?

Если вы задаетесь таким вопросом, то думаю, что Вам эта прога не нужна =)
Но все же раскажжу о нескольких областях применения этой программы:
Во-1-ых это создание текстур для компьютерных игр, к примеру: когда в одном файле хранится несколько игровых пиктограмм;
Во-2-ых это создание CSS-спрайтов для веб-сайта (по сути сам процесс создания идентичен предыдущему пункту);
Ну а кроме того, присутствует возможность обработки изображений мультиблендингом различных элементов поверх оригинальной картинки...

Как использовать?

(ответы на ЧАсто задаваемые ВОпросы внизу)
Откройте файл изображения с помощью этой программы (можно просто перетащить его на иконку проги) и все изображения в директории с открытым файлом будут склеены в один файл.
(Рекомендуется чтобы изображения были одинакового размера.)
После открытия файла вы должны будете выбрать способ вставки картинок (по горизонтали или вертикали) и максимальное число картинок по заданной оси (для перехода на следующий столбец или строку).
Программа поддерживает форматы: BMP, JPEG и PNG.

Разберемся на простом примере: (материалы для примера)
Пусть у нас есть папка с несколькими изображениями:
Перетащим одно из них на экзешник программы (по открытому файлу определяется размер элемента, но т.к. в данном случае все картинки одинакового размера, какую именно открывать - неважно).
Перед нами появится мессэджбокс с кнопками "Да"/"Нет", в котором спрашивается "хотим ли мы использовать вертикальное расположение", соответственно если мы хотим использовать горизонтальное расположение - нажимаем "Нет":
Затем появляется сообщение в котором мы должны ввести максимально допустимое количество картинок по выбранной оси. Введем 3:
Вуаля, мы получаем файл "Gummer by Markus_13 4200786.bmp" в котором объединены все картинки из нашей директории:

Добавление фрагментов:

Также вы можете использовать файл "Gummer_paste.ini" в папке с открытым файлом:
в этом файле в первой строке должен стоять номер (или координаты в формате "X;Y") фрагмента для вставки,
вторая линия должна содержать имя файла для вставки,
в файле может быть много таких парных строк, таким образом можно вставить несколько изображений за раз;
в таком случае открытый файл должен быть паттерн-изображением.

Опять же, разберемся на примере: (материалы для примера)
Давайте к сформированному ранее изображению с шестью цветными плитками добавим еще 3...
Создадим еще 2 картинки в той же папке:
И еще одно изображение у нас, к примеру, есть в другой папке:
Отлично, далее создаем файл "Gummer_paste.ini":
Открываем его в блокноте и записываем в него следующий текст:
7 7_aqua.bmp 8 8_black.bmp 9 E:\`My Works\Progs\Gummer\artic\lime.jpg (Первые два файла указаны без абсолютного пути, т.к. они находятся в одной директории с ини-файлом.)
Ини-файл готов, теперь откроем ранее созданный файл "Gummer by Markus_13 4200786.bmp" с помощью Gummer`а.
Настройки указываем те же, что и в прошлый раз:
"Вертикальное расположение?"->"Нет",
"Картинок по горизонтали:"->"3"...
Если вы все сделали правильно, то на выходе получите вот такое изображение (оно будет сохранено в тот же файл):

Вставка PNG-файлов с переменной прозрачностью:

При вставке PNG-изображений вы можете указывать способ переноса альфа-канала:
в таком случае формат первой строки будет "X;Y;Z" где Z это число от 1 до 3:
1 - режим полного переноса (прозрачность фрагмента вставки будет перенесена в паттерн-файл),
2 - режим наложения (фрагмент-вставка будет наложен поверх оригинального изображения), он включен по-умолчанию,
3 - режим вычитания (прозрачность фрагмента будет вычтена из оригинального альфа канала).

Как обычно, привожу пример: (материалы для примера)
За основу возьмем картинку с девятью плитками из прошлого примера, только сохраним ее как 32-битный PNG-файл (в Photoshop`е или Paint`е - неважно)...
Также нарисуем PNG-картинку с переменной прозрачностью, например такую (можно взять из материалов к этому примеру):
В "Gummer_paste.ini" запишем следующее:
4 cross.png 128;0;1 cross.png 128;128;3 cross.png (Первый элемент указан с номером, второй и третий с координатами и режимом наложения прозрачности.)
Ини-файл готов, открываем ранее созданный PNG-файл "Gummer by Markus_13 4200786.png" с помощью Gummer`а.
Настройки указываем те же, что и в прошлый раз: "Вертикальное расположение?"->"Нет", "Картинок по горизонтали:"->"3"...
Если вы все сделали правильно, то на выходе получаем:

Склеивание изображений разных размеров:

Вообще рекомендуется чтобы изображения были одинакового размера, но если очень хочется - то все возможно! =)
По сути этот процесс идентичен склеиванию одноформатных картинок,
к примеру: (материалы для примера) (Горизонтальное расположение по 2 картинки)
Но есть один нюанс... А именно: промежутки появляющиеся из-за несоответствия размеров входных изображений...
В PNG-файлах промежутки естественно будут прозрачны, в BMP/JPG файлах они будут белого цвета (по-умолчанию).
Но, внимание: хорошая новость, их цвет можно изменить... Для этого создаем в директории с картинками файл "Gummer.ini" и записываем в него первой строкой необходимый нам фоновый цвет.
Цвет представляется трехбитным HEX-кодом. Вы можете генерировать такой код с помощью программы CLRer.
К примеру если мы запишем в "Gummer.ini" ноль, то получим черный фон:
А если в "Gummer.ini" записать следующий текст:
FF80FF ...мы получим светло-розовый фон:

Экспорт кадров из gif-картинок:

Так же прост как система ценностей амебы: открываем gif-файл с помощью программы и получаем папку с кадрами этой gif-картинки в png-формате (название папки будет именем gif-файла). Также в этой же папке будет создан файл "delays.txt", в котором будут построчно перечислены меж-кадровые задержки (время отображения каждого кадра) в сотых долях секунды.
Так же есть возможность использовать по-пиксельную фильтрацию для gif'ок с прозрачностью: для включения фильтра создаем в папке с gif-картинкой файл "gif_filter.txt"...
В этот файл нам необходимо записать код фильтра (2-3х значное число), в котором первая цифра (или первые две) представляют из себя мощность и режим фильтра, а последняя цифра является модификатором результирующей прозрачности...
От 00 до 99 - фильтр убирающий светлые пикселы по краям картинки, 100-199 то же самое но для темных пикселов.
Под действие фильтра попадают все пикселы, у которых как минимум 2 соседних пиксела прозрачны, далее идет определение гаммы (яркости):
Цвет пиксела раскладывается на RGB составляющую и побайтно вычисляется разница между цветом пиксела и белым (00-99) или черным (100-199) цветом.
Если разница получается меньше мощности фильтра - пиксел становится прозрачным... Мощность фильтра равняется X*30, где X - первая цифра кода (или вторая для черного цвета).
Результирующая прозрачность пиксела вычисляется следующим образом:
Если у пиксела прозрачных соседей всего 2 - его прозрачность станет 78% (т.е. он будет виден на 22%), если прозрачных соседей больше двух пиксел станет полностью прозрачным. Но после первого расчет вступает в действие код фильтра: прозрачность уменьшается на X%, где X=(последняя цифра*3,9).
Рассмотрим на примере:

1) исходная картинка с ярко-желтой окантовкой, 2) изображение после фильтра 60 (окантовка полностью стерта), 3) изображение после фильтра 69 (окантовка стала прозрачна на 65% (3,9*9=~35; 100-35=65)).
Если бы окантовка была темной - было бы нужно подставить единицу слева от кода фильтра, т.е. 160 или 169...
Если попытаться использовать фильтр 19 (или 10) - мы увидим, что окантовка останется неизменной, так как не попадет под действие фильтра из-за того что разница гаммы с белым цветом будет выше мощности фильтра:
Цвет окантовки #FFFFC8, если побайтно то: красная составляющая = 255, зеленая = 255, синяя = 200. Считаем разницу с белым цветом (#FFFFFF): для красной составляющей 255-255=0, для зеленой 255-255=0, для синей 255-200=55; затем суммируем: 0+0+55=55. Считаем мощность фильтра: 1*30=30, в итоге получем что 55>30 - соответственно этот цвет не попадает под действие фильтра с такой мощностью!
Если вы чего-то не поняли, не расстраивайтесь - функция фильтрации граничных пикселов вам врядли пригодится (думаю кроме меня ей никто вообще не воспользуется =)


Запуск программы из bat-файла:

Формат запуска: Gummer.exe "входной_файл" Tx {"выходной_файл"} {"ини_файл_вставок"} (фигурными скобками показаны опциональные параметры, задавать которые не обязательно)
"Tx" - параметры задания расположения, где "T" - тип расположения ("V" - вертикальный, "H" - горизонтальный), а "x" - номер вставки.
Пример:Gummer.exe "E:\`My Works\Progs\Gummer\abysspriest.bmp" V3 out.png Gummer.exe "E:\`My Works\Progs\Gummer\out.png" V3 out.bmp Gummer_paste1.ini Gummer.exe out.bmp V3 out.png Gummer_paste2.ini pause

ЧАсто задаваемые ВОпросы:

Почему у меня ошибка?
Почему у меня неработает???
Вариант 1: Возможно Вы неправильно используете программу! (прочитайте эту статью - возможно поможет =)
Вариант 2: Возможно Вы используете устаревшую версию, проверьте наличие новой версии здесь или там!
Вариант 3: Возможно в программе ошибка, если Вы уверены что Вы все делаете правильно - пришлите мне на мыло полный текст ошибки и краткое описание своих действий перед ошибкой (с программой Gummer разумеется, рассказывать мне что Вы съели на обед необязательно =)

------------------------------------------------------------------------------

Как определить порядок склеиваемых изображений?
Как поменять местами два изображения при склеивании?
Т.к. порядок изображений определяется лексикографическим методом по имени файла, чтобы поменять его: переименуйте нужное изображение.
Для наглядности - упорядочивайте файлы в Проводнике по имени.

------------------------------------------------------------------------------

Почему мои картинки склеиваются в неправильный формат файла?
Формат выходного изображения (при склеивании изображений различных форматов) зависит от формата открытого файла. Поэтому, если нужен PNG: открывайте PNG-файл прогой, если нужен JPG: открывайте JPG-файл, и т.д.

------------------------------------------------------------------------------

Почему программа Gummer без интерфейса?
Потому что такова задумка автора =) Лично у меня вынесен ярлык проги в меню "Отправить", и мне так удобней =)

------------------------------------------------------------------------------

Как добавить ярлык программы в меню "Отправить"?
Выделяете нужную программу и нажимаете "Ctrl"+"C", затем открываете эту папку: "%UserProfile%\SendTo".
В этой папке вставляете ярлык. (Клик по пустому месту правой кнопкой и в появившемся контекстном меню жмем "Вставить ярлык" =)

------------------------------------------------------------------------------

Откуда я взял картинки для примеров?
Все кроме летучей мыши Я нарисовал сам. Все эти картинки применялись в моих проектах...

------------------------------------------------------------------------------


Успехов при работе с программой Gummer, отчеты о багах и пожелания можете присылать мне на мыло (мой_ник@ymail.com), а можете и не присылать :)

Вы всегда можете скачать Gummer здесь или там.